home *** CD-ROM | disk | FTP | other *** search
- package java.awt;
-
- public class Polygon {
- public int npoints;
- public int[] xpoints = new int[4];
- public int[] ypoints = new int[4];
- Rectangle bounds;
-
- public Polygon() {
- }
-
- public Polygon(int[] var1, int[] var2, int var3) {
- this.npoints = var3;
- this.xpoints = new int[var3];
- this.ypoints = new int[var3];
- System.arraycopy(var1, 0, this.xpoints, 0, var3);
- System.arraycopy(var2, 0, this.ypoints, 0, var3);
- }
-
- void calculateBounds(int[] var1, int[] var2, int var3) {
- int var4 = Integer.MAX_VALUE;
- int var5 = Integer.MAX_VALUE;
- int var6 = Integer.MIN_VALUE;
- int var7 = Integer.MIN_VALUE;
-
- for(int var8 = 0; var8 < var3; ++var8) {
- int var9 = var1[var8];
- var4 = var4 <= var9 ? var4 : var9;
- var6 = var6 >= var9 ? var6 : var9;
- int var10 = var2[var8];
- var5 = var5 <= var10 ? var5 : var10;
- var7 = var7 >= var10 ? var7 : var10;
- }
-
- this.bounds = new Rectangle(var4, var5, var6 - var4, var7 - var5);
- }
-
- void updateBounds(int var1, int var2) {
- int var3 = this.bounds.x;
- this.bounds.x = var3 <= var1 ? var3 : var1;
- var3 = this.bounds.width;
- int var4 = var1 - this.bounds.x;
- this.bounds.width = var3 >= var4 ? var3 : var4;
- var3 = this.bounds.y;
- this.bounds.y = var3 <= var2 ? var3 : var2;
- var3 = this.bounds.height;
- var4 = var2 - this.bounds.y;
- this.bounds.height = var3 >= var4 ? var3 : var4;
- }
-
- public void addPoint(int var1, int var2) {
- if (this.npoints == this.xpoints.length) {
- int[] var3 = new int[this.npoints * 2];
- System.arraycopy(this.xpoints, 0, var3, 0, this.npoints);
- this.xpoints = var3;
- var3 = new int[this.npoints * 2];
- System.arraycopy(this.ypoints, 0, var3, 0, this.npoints);
- this.ypoints = var3;
- }
-
- this.xpoints[this.npoints] = var1;
- this.ypoints[this.npoints] = var2;
- ++this.npoints;
- if (this.bounds != null) {
- this.updateBounds(var1, var2);
- }
-
- }
-
- public Rectangle getBoundingBox() {
- if (this.bounds == null) {
- this.calculateBounds(this.xpoints, this.ypoints, this.npoints);
- }
-
- return this.bounds;
- }
-
- public boolean inside(int var1, int var2) {
- if (this.getBoundingBox().inside(var1, var2)) {
- int var3 = 0;
-
- for(int var4 = 0; var4 < this.npoints; ++var4) {
- int var5 = (var4 + 1) % this.npoints;
- int var6 = this.xpoints[var5] - this.xpoints[var4];
- int var7 = this.ypoints[var5] - this.ypoints[var4];
- if (var7 != 0) {
- int var8 = var1 - this.xpoints[var4];
- int var9 = var2 - this.ypoints[var4];
- if (this.ypoints[var4] == var2) {
- --var9;
- }
-
- if (this.ypoints[var5] == var2) {
- ++var7;
- }
-
- float var10 = (float)var9 / (float)var7;
- if ((double)var10 >= (double)0.0F && (double)var10 <= (double)1.0F && (int)(var10 * (float)var6) > var8) {
- ++var3;
- }
- }
- }
-
- if (var3 % 2 == 0) {
- return false;
- } else {
- return true;
- }
- } else {
- return false;
- }
- }
- }
-